package leetcode.str;

/**
 * todo
 */
public class Test541 {
    //    给定一个字符串 s 和一个整数 k，从字符串开头算起，每 2k 个字符反转前 k 个字符。
//
//    如果剩余字符少于 k 个，则将剩余字符全部反转。
//    如果剩余字符小于 2k 但大于或等于 k 个，则反转前 k 个字符，其余字符保持原样。
//
//    来源：力扣（LeetCode）
//    链接：https://leetcode-cn.com/problems/reverse-string-ii
//    著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
    public static void main(String[] args) {
        String abcdefg = reverseStr("abcdefg", 2);
        System.out.println(abcdefg);
    }
    public static String reverseStr(String s, int k) {
        char[] chars = s.toCharArray();
        int i = chars.length / (2 * k);
        if(chars.length % (2 * k) > 0){
            i++;
        }
        for (int j = 0; j < i; j++) {
            int left = j*k*2,right = left+k-1 > chars.length-1?chars.length-1:left+k-1;
            while (left <= right){
                char t = chars[right];
                chars[right] = chars[left];
                chars[left] = t;
                left++;
                right--;
            }
        }
        return new String(chars);
    }
}
